<?php

class Application_Model_Auth
{
	public static function login($login, $senha)
	{
		//Inicia o adaptador Zend_Auth para banco de dados
		$authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter());
		 
		$authAdapter->setTableName('usuarios')
			->setIdentityColumn('login')
			->setCredentialColumn('senha')->setCredentialTreatment('MD5(?)');
		 
		//Define os dados para processar o login
		$authAdapter->setIdentity($login)->setCredential($senha);
		 
		//Faz inner join dos dados do perfil no SELECT do Auth_Adapter
		$select = $authAdapter->getDbSelect();
		$select->join( array('p' => 'perfil'), 'p.id = usuarios.id_perfil', array('nome_perfil' => 'nome') );
		 
		//Efetua o login
		$auth = Zend_Auth::getInstance();
		$result = $auth->authenticate($authAdapter);
		 
		//Verifica se o login foi efetuado com sucesso
		if ( $result->isValid() ) {
		
			//Armazena os dados do usuário em sessão, apenas desconsiderando a senha do usuário
			$info = $authAdapter->getResultRowObject(null, 'senha');
		
			$usuario = new Application_Model_Usuario();
			$usuario->setNome( $info->nome );
			$usuario->setUsuario( $info->login );
			$usuario->setRoleId( $info->nome_perfil );
			$usuario->setIdParoquia( $info->id_paroquia );
		
			$storage = $auth->getStorage();
			$storage->write($usuario);
			
			return 1;
		}
		throw new Exception('Usuário ou senha inválidos!');
		
	}
}

